package com.yfqy.admin.service;

import com.github.pagehelper.PageInfo;
import com.yfqy.admin.domain.dto.revenue.AddRevenueRecord;
import com.yfqy.admin.domain.dto.revenue.DailyIncomeDTO;
import com.yfqy.admin.domain.dto.revenue.ModifyRevenueRecord;
import com.yfqy.admin.domain.dto.revenue.PaymentTypeStatsDTO;
import com.yfqy.admin.domain.dto.revenue.RevenueRecordDTO;
import com.yfqy.admin.domain.dto.revenue.RevenueRecordQuery;
import com.yfqy.admin.domain.dto.revenue.RevenueStatisticsDTO;
import com.yfqy.admin.domain.entity.RevenueRecord;
import com.yfqy.admin.domain.vo.common.ResultVO;

import java.util.Date;
import java.util.List;

public interface RevenueRecordService {
    void insertRevenueRecords(List<RevenueRecord> dataList);

    ResultVO<PageInfo<RevenueRecordDTO>> pageList(RevenueRecordQuery query);

    ResultVO<String> addRevenueRecord(AddRevenueRecord addRevenueRecord);

    ResultVO<String> modifyRevenueRecord(ModifyRevenueRecord modifyRevenueRecord);

    /**
     * 每日营业统计（日、周、月、年）
     *
     * @return
     */
    ResultVO<RevenueStatisticsDTO> revenueStatistics();

    /**
     * n天前到今天的日收入走势
     *
     * @param days
     * @return
     */
    List<DailyIncomeDTO> getLastNDaysIncome(int days);

    // 获取过去30天优化后的支付类型统计
    List<PaymentTypeStatsDTO> getLast30DaysPaymentStats();

    // 获取动态日期范围的优化统计
    List<PaymentTypeStatsDTO> getPaymentStatsByDateRange(Date startDate, Date endDate);

    // 带缓存的版本
    List<PaymentTypeStatsDTO> getCachedPaymentStats(Date startDate, Date endDate);
}
